import axios from 'axios'
import { getToken } from '@/utils/auth'
import router from '@/router'
import { ElMessageBox, ElMessage } from "element-plus";


axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项，表示请求URL公共部分
  // baseURL: process.env.VUE_APP_BASE_API,
  // 超时
  timeout: 10000
})

// request拦截器
service.interceptors.request.use(config => {
  console.log("config url:" +config.url);
  // 如果是登录接口，不做token校验
  if (config.url && config.url.includes('/userLogin')) {
    return config;
  }
  let token = getToken();
  if (!token) {
    // 没有token，跳转到登录页
    router.push('/');
    // 返回一个不会发起请求的Promise
    return Promise.reject(new Error('未获取到token，已跳转到登录页'));
  }
  config.headers['Authorization'] = token; // 让每个请求携带自定义token
  // get请求映射params参数
  if (config.method === 'get' && config.params) {
    let url = config.url + '?' + tansParams(config.params)
    url = url.slice(0, -1)
    config.params = {}
    config.url = url
  }
  return config
}, error => {
  console.log(error)
  return Promise.reject(error)
})

// response拦截器
service.interceptors.response.use(
  response => {
    console.log("response=======1111" +JSON.stringify(response));
    if(response.data.code == 403){
      window.location.href = '/';
      return Promise.reject(error);
    }
    if(response.data.code == 4031){
      ElMessage.error('无权限访问');
      return Promise.reject(error);
    }
    return response;
  },
  error => {
    console.log("error=======" +error.response);
    if (error.response && error.response.status === 403) {
      // 跳转到登录页
      router.push('/');
    }
    return Promise.reject(error);
  }
)

// 封装统一请求方法
export function request(config) {
  console.log("request" +JSON.stringify(config));
  return service(config);
}

export default service
